package com.jiajia.study.mylist;

/**
 * @author : zjj
 * @date : 2021/1/15 10:49
 */
public interface MyList<E> {
    /**
     * 元素未找到索引
     */
    static final int ELEMENT_NOT_FOUND = -1;
    /**
     * 清除所有元素
     */
    void clear();

    /**
     * 元素的数量
     * @return  元素的数量
     */
    int size();

    /**
     * 是否为空
     * @return  返回结果
     */
    boolean isEmpty();

    /**
     * 是否包含某个元素
     * @param element   元素
     * @return          结果
     */
    boolean contains(E element);

    /**
     * 添加元素到尾部
     * @param element   元素
     */
    void add(E element);

    /**
     * 获取index位置的元素
     * @param index 元素的索引
     * @return      元素的值
     */
    E get(int index);

    /**
     * 设置index位置的元素
     * @param index     元素的索引
     * @param element   元素的值
     * @return 原来的元素ֵ
     */
    E set(int index, E element);

    /**
     * 在index位置插入一个元素
     * @param index     元素的索引
     * @param element   元素的值
     */
    void add(int index, E element);

    /**
     * 删除index位置的元素
     * @param index 元素的索引
     * @return      被删除元素的值
     */
    E remove(int index);

    /**
     * 查看元素的索引
     * @param element   元素
     * @return          元素的索引
     */
    int indexOf(E element);

}

